package cn.song.freight.domain.dto;

import cn.song.freight.domain.query.QueryEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.SuperBuilder;

/**
 * 查询操作日志列表请求参数
 *
 * @author SongRenShuo
 */
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "查询操作日志列表请求参数")
public class OperationLogQueryDTO extends QueryEntity {

    /**
     * 链路追踪ID
     */
    @ApiModelProperty(value = "链路追踪ID")
    private String traceId;

    /**
     * 模块类型
     * @see cn.song.freight.enums.ModuleType
     */
    @ApiModelProperty(value = "模块类型：AREA(区域管理)、FREIGHT_STRATEGY(运费策略)等")
    private String moduleType;

    /**
     * 操作类型
     * @see cn.song.freight.enums.OperationType
     */
    @ApiModelProperty(value = "操作类型：INSERT(新增)、UPDATE(修改)、DELETE(删除)等")
    private String operationType;

    /**
     * 业务ID
     */
    @ApiModelProperty(value = "业务ID")
    private String businessId;

    /**
     * 业务名称（模糊查询）
     */
    @ApiModelProperty(value = "业务名称（模糊查询）")
    private String businessName;

    /**
     * 操作人
     */
    @ApiModelProperty(value = "操作人")
    private String operator;

    /**
     * 请求IP地址
     */
    @ApiModelProperty(value = "请求IP地址")
    private String requestIp;

    /**
     * 操作状态：1-成功，0-失败
     */
    @ApiModelProperty(value = "操作状态：1-成功，0-失败")
    private Integer status;

    /**
     * 请求方法
     */
    @ApiModelProperty(value = "请求方法：GET、POST、PUT、DELETE")
    private String requestMethod;

    /**
     * 操作描述（模糊查询）
     */
    @ApiModelProperty(value = "操作描述（模糊查询）")
    private String operationDescription;
}
